﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Ink;

namespace RozpoznawanieCore.KsztaltyFolder
{
    class Prostokat : Ksztalt
    {
        public int Dlugosc
        {
            get
            {
                return x2 - x1;
            }
        }

        public int Wysokosc
        {
            get
            {
                return y2 - y1;
            }
        }

        new public Ksztalt dolaczDoMnie(Ksztalt ks)
        {
            if (ks is Kreska)
            {
                if (ks is KreskaSkosna)
                {
                    KreskaSkosna kk = (KreskaSkosna)(ks);
                    if (kk.orientacja == KreskaSkosna.ROSNIE)
                    {
                        if (kk.x1 > x1 - Dlugosc * 0.3 && kk.x1 < x1 + Dlugosc * 0.3 &&
                            kk.x2 > x1 + Dlugosc * 0.3 && kk.x1 < x1 + Dlugosc * 0.7 &&
                            kk.y1 > y1 + Wysokosc * 0.05 && kk.y1 < y1 + Wysokosc * 0.7 &&
                            kk.y2 > y1 - Wysokosc * 0.4 && kk.y2 < y1 + Wysokosc * 0.4

                            )
                        {
                            Console.WriteLine("notatka ziom");
                            return new Notatka(this);
                        }
                        else
                        {
                            Console.WriteLine("nie notatka ale skosnie");
                        }
                    }
                    else
                    {
                        Console.WriteLine("nie notatka bo maleje");
                    }
                }
            }
            return null;
        }
        public Prostokat()
        {
        }
        public static Prostokat zrobZKatow(Kat k1, Kat k2)
        {
            Prostokat p = new Prostokat();
            p.kompletny = true;
            p.x1 = Math.Min(k1.x1, k1.x2);
            p.x2 = Math.Max(k1.x1, k1.x2);
            p.y1 = Math.Min(k2.y1, k2.y2);
            p.y2 = Math.Max(k2.y1, k2.y2);
            p.strokeCol.Add(k1.strokeCol);
            p.strokeCol.Add(k2.strokeCol);
            return p;

        }
        public Prostokat(StrokeCollection stroke, String nazwa)
        {
            if (nazwa == "Rectangle" || nazwa == "Square") pewnosc = 1;
            else pewnosc = 0.9;
            double minx = 999;
            double miny = 999;
            double maxx = 0;
            double maxy = 0;
            kompletny = true;
            for (int i = 0; i < stroke.Count; i++)
            {
                for (int j = 0; j < stroke[i].StylusPoints.Count; j++)
                {
                    if (stroke[i].StylusPoints[j].X > maxx) maxx = stroke[i].StylusPoints[j].X;
                    if (stroke[i].StylusPoints[j].Y > maxy) maxy = stroke[i].StylusPoints[j].Y;
                    if (stroke[i].StylusPoints[j].X < minx) minx = stroke[i].StylusPoints[j].X;
                    if (stroke[i].StylusPoints[j].Y < miny) miny = stroke[i].StylusPoints[j].Y;
                }
            }
            Console.WriteLine(minx + " " + miny + " " + maxx + " " + maxy);
            x1 = (int)minx;
            y1 = (int)miny;
            x2 = (int)maxx;
            y2 = (int)maxy;
            strokeCol = stroke;
        }

    }

}
